package collection;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 集合只能存放引用类型元素，存放的就是元素的引用（元素的地址）
 */
public class CollectionDemo4 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        Point p = new Point(1, 2);
        c.add(p); //将p存入集合c
        System.out.println("p:" + p);//(1,2)
        System.out.println("c:" + c);//[(1,2)]

        p.setX(2); //改变元素p的值
        System.out.println("p:" + p);//(2,2)
        System.out.println("c:" + c);//[(2,2)] 这就说明，元素p放进集合c里了，放进去的不是值，而是个地址(时刻注意！！！！）
        //只是将p的地址(在栈里)放入集合c里了，改了对象p(的内容，在堆里),地址不变，那么集合c内的值也会被修改

        doSome(c, p);
        System.out.println("p:" + p);
        System.out.println("c:" + c);
    }
    public static void doSome(Collection c,Point p){
            p.setX(3);
            p = new Point(4,5);
            c = new ArrayList();
            c.add(p);
            p.setX(6);
    }
}
